/**
 * v-debounce
 * 按钮防抖指令，可自行扩展至input
 * 接收参数：function类型
 */
 import type { Directive, DirectiveBinding } from 'vue'
 interface ElType extends HTMLElement {
   __handleClick__: any
 }
 const directive: Directive = {
   mounted(el: ElType, binding: DirectiveBinding) {
     if (typeof binding.value !== 'function') {
       console.error('callback must be a function')
       return;
     }
     let timer: NodeJS.Timeout|null = null
     el.__handleClick__ = function(e: ElType) {
       if (timer) {
         clearInterval(timer)
       }
       timer = setTimeout(() => {
         binding.value()
       }, 200)
     }
     el.addEventListener('click', el.__handleClick__)
   },
   beforeUnmount(el: ElType) {
     el.removeEventListener('click', el.__handleClick__)
   }
 }
 
 export default directive